﻿

function checkUser(){
	if(!(document.getElementById('nameList').selectedIndex == 0)) {
		document.getElementById('book').disabled = false;
		document.getElementById('password').disabled = false;
		document.getElementById('password').focus();
		
		updatePriceList();
	} else{
		document.getElementById('book').disabled = true;
		document.getElementById('password').disabled = true;
	}
} // end checkUser

function updatePriceList() {
	var myRequest;
	
	// Preise aktualisieren wenn ein neuer Benutzer gewählt wurde
	myRequest = "getUserData.php?name=" + document.getElementById('nameList').value;
	$userStatus = sendGETRequest(myRequest).split(';'); //'Name;Hash;Rechte;Status'	
	$userStatus = $userStatus[3];
	
	myRequest   = "getProductPrice.php?state=" + $userStatus;
	var newPriceList = sendGETRequest(myRequest).split(';'); // newPriceList: {Preis Prdkt1;Preis Prdkt2;...}
		
	for(var i = 0; i < newPriceList.length-1; i++) {
		document.getElementById('price'+(i+1)).innerHTML  =  newPriceList[i];
	}
} // end updatePriceList

function clearIt(){
	document.getElementById('password').value = "";
} // end clearIt

function getNameList() {
	var str = sendGETRequest("getNames.php");

   // Format der von str: name1,status1;name2,status2;name3,status3
	var nameList = [];
	var group = str.split(";");
	
	// String in 2D Array aufteilen
	for(i in group) { 
		nameList.push(group[i].split(",")) 
	};

	var select = document.getElementById( "nameList" );
	var optgroup = document.createElement( "optgroup" );
	optgroup.label = "Aktivitas";
	select.appendChild( optgroup );
	
	var optgroup2 = document.createElement( "optgroup" );
	optgroup2.label = "Altherrenschaft";
	select.appendChild( optgroup2 );
	
	var optgroup3 = document.createElement( "optgroup" );
	optgroup3.label = "Fax";
	select.appendChild( optgroup3 );
	
	for(i in group) {	
		var option    = new Option();
		option.value = (nameList[i][0]);
		option.appendChild( document.createTextNode(nameList[i][0]));
			
		if(  nameList[i][1] == 'FX'  ||  nameList[i][1] == 'AB'   ||  nameList[i][1] == 'iAB'  ){	
			optgroup.appendChild( option );
		} else if( nameList[i][1]== 'AH' ){
			optgroup2.appendChild( option );
			
	    } else if( nameList[i][1]== 'FAX' ){
			optgroup3.appendChild( option );
		}

	} // end for
	

	document.getElementById('nameList').selectedIndex = 0;
} // end getNameList

function add(vari) {
	document.getElementById(vari).value = (parseInt(document.getElementById(vari).value) + 1);
} // end add

function subt(vari) {
	document.getElementById(vari).value = Math.max(0, (parseInt(document.getElementById(vari).value) - 1) );
} // end subt

function pwCheck() {
	var userName  = document.getElementById('nameList').value;
	var myRequest = "getUserData.php?name=" + userName;
	var userData  = sendGETRequest(myRequest).split(';'); //userData = {Name;Hash;Rechte;Status}
	
	if( userData[1] == 'overloaded'){
		overloadedBooking(userData);
		return;
	}
	
	$temp = document.getElementById('password').value;
	$pass = hex_md5($temp);
	if (!($pass == userData[1])) {
		alert('FEHLER!\nPasswort oder Name falsch!');
		document.getElementById('password').value = "";
		document.getElementById('password').focus();
	} else {	
		singleBooking(userData, '');
	} // end if password
} // end booking

function singleBooking(userData, notice){
	// Getränke einbuchen
	var myDrinks =  document.getElementsByName('drink');
	var count = 0;
	var buyList = '';
	var id = 0;
	var newSaldo = 0;
	
	// TODO: bessere lösung finden als über alle Produkte iterieren
	for(var i=0; i< myDrinks.length; i++) {					
		if( myDrinks[i].value > 0) {				
			  count = count +1;
			  // String mit den gekauften Produkten für spätere Zusammenfassung
			  buyList += myDrinks[i].id + ': ' + myDrinks[i].value + '  ';
			  
			  id = i+1;
			  myRequest = "doBooking.php?req=" + userData[0] + "&state=" + userData[3] + "&id=" + id  + "&count=" + myDrinks[i].value + "&notice=" +notice;				
			  newSaldo = parseFloat(sendGETRequest(myRequest));
			  
			  // Felder zurück setzen
			  myDrinks[i].value = 0; 
		} // end if myDrinks[i] > 0				
	} // end for
	
	if( newSaldo == 0){
		alert('Abbruch. Bitte erst Auswahl treffen.');
	} else {
		alert('Es wurden erfolgreich '+ count +' Produkte abgebucht:\n ' + buyList +  ' \n\n Dein  neuer Kontostand lautet:' +  newSaldo + ' Euro');
	}
	
		
	document.getElementById('password').value = "";
	document.getElementById('nameList').selectedIndex = 0;
	checkUser();
} // end singleBooking


function overloadedBooking(userData){
	//userData = {Name;Hash;Rechte;Status}
	$hash = hex_md5( document.getElementById('password').value );
	
	// Finde Nutzer mit passendem Passwort
	var myRequest = "getUserData.php?hash=" + $hash;
	$booker = sendGETRequest(myRequest).split(';'); // 'Name;PW-Hash;Rechte;Status'
	
	if( $booker[0] == '') {
		// Kein Nutzer hat das entsor. Passwort
		alert('Keinen Nutzer mit diesem Kennwort gefunden ');
	} else if ( $booker[0] != '' && $booker[2] < userData[2] ) {
	    // Nutzer gefunden, hat aber keine Rechte
		alert('Sie haben keine Rechte um auf' + user + 'zu buchen');
	} else {
	    // Nutzer mit entspr. Rechten gefunden
		notice = prompt('Bitte den/die Namen eingeben für wen das Coleurbier ist:');
		
	    if (notice != '' && notice != null) {
			singleBooking(userData, $booker[0] + ': ' + notice);
		} else {
			alert('Buchvorgang abgebrochen.');
		}
		
	}
} // overloadedBooking

function sendGETRequest(request) {
	var xmlhttp = null;
				
	// Mozilla
	if (window.XMLHttpRequest) {
		xmlhttp = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}

	xmlhttp.open("GET", request, false);
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			$returnVal  = xmlhttp.responseText;
		}
	}
	
	xmlhttp.send(null);
	
	return $returnVal;
} // end sendGETRequest
	
function abort() {	
	var nrElements = document.getElementsByName('drink');
	
	for(var i = 0; i < nrElements.length; i++) {
		document.getElementsByName('drink')[i].value =0;
	}
	document.getElementById('password').value = "xxxxxxxx";
	document.getElementById('nameList').selectedIndex = 0;
	checkUser();
} // end abort




function listBookings(pathAdd){
		var user  = document.getElementById('nameList').value;
		var myRequest = pathAdd+"listBookings.php?name=" + user;
		var bookingList  = sendGETRequest(myRequest) ;
		document.getElementById('bookingList').innerHTML  =  bookingList;
}// end listBookings

function pwCheckAndList(){
	var userName  = document.getElementById('nameList').value;
	var pass = hex_md5( document.getElementById('password').value );
	
	var myRequest = "authUser.php?name=" + userName + "&pw=" + pass;
	var response  = sendGETRequest(myRequest); //userData = {Name;Hash;Rechte;Status}
	
	if (response == 'done') {
		listBookings('');
	} else {
		alert('Anmeldung fehlgeschlagen');
	}	
} // end pwCheckAndList

